/**
 * 退出逻辑
 */
export const useLogout = (flag) => {
    const token = useCache("TOKEN").getCache();
    if (token) {
        //1: 开始执行服务端的退出
        useLogoutApi()
    }
    // 1：用户userCookie里面缓存的uuid
    useCache("TOKEN").remove()
    useCache("CATEGORYLIST").remove()
    useCache("NATEGORYLIST").remove()
    // 2: 状态管理的清除
    const userStore = useStore.userState()
    // 重置状态管理，不会删除持久化缓存key ,它只会把状态管理属性值全部清空，
    userStore.$reset()
    // 删除缓存的信息
    localStorage.removeItem("kva-nuxt-userlogin")
    sessionStorage.removeItem("kva-nuxt-bannerflag")
    sessionStorage.removeItem("kva-nuxt-login")
    sessionStorage.removeItem("kva-nuxt-channelsystem")
    //4: 拿到路由跳转
    const route = useRoute()
    // 获取当前访问的路径，如果不是首页，就跳转到首页
    if (route.path.indexOf('user') != -1 || route.path.indexOf('play') != -1
        || route.path.indexOf('add') != -1 || route.path.indexOf('edit') != -1) {
        if(!flag) {
            // 这里的调整首页，并且把中间访问的所以的历史路由全部清空。
            navigateTo("/", {replace: true})
        }
    }
}

/**
 * 全局方法判断是否登录
 */
export const useIsLogin = async (flag=true) => {
    try {
        const userStore = useStore.userState()
        if (userStore.isLogin && flag){
            return true
        }
        const resp = await useGetLoginUserInfoApi()
        // 2: 状态管理的清除
        if(resp.data.uuid){
            useCache("TOKEN").setCache(userStore.uuid)
        }
        // 这里一定是判断，否则你就永远登录状态
        if (resp.data.uuid ) {
            userStore.setLoginUserInfo(resp.data)
            return true;
        }
        return false
    }catch(e){
        return false
    }
}


/**
 * 直接获取用户的唯一标识
 */
export const useGetUserUid = () => {
    const userUid = useCache("TOKEN").getCache()
    const userStore = useStore.userState()
    const loginUser = localStorage.getItem("kva-nuxt-userlogin")
    return userUid || userStore.uuid || loginUser.uuid
}


/**
 * 直接获取用户的唯一标识
 */
export const useLoginDialog = async (flag=true) => {
    const isLogin = await useIsLogin(flag)
    const userStore = useStore.userState()
    const loginStore = useStore.loginState()
    if(isLogin){
        loginStore.setLoginOpen(false)
        return Promise.resolve(userStore)
    }else{
        loginStore.setLoginOpen(true)
        return Promise.reject(false)
    }
}


/**
 * 全局方法判断是否登录
 */
export const useIsLoginPromise = () => {
    const uuidToken = useCache("TOKEN").getCache()
    // 2: 状态管理的清除
    const userStore = useStore.userState()
    if (uuidToken || userStore.uuid ) {
        return Promise.resolve(true,userStore.uuid  || uuidToken);
    }

    return Promise.reject(false);
}